package com.eastfair.auth.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 实体类
 * 
 * </p>
 *
 * @author ligang
 * @since 2021-07-23
 */
@Data
@ApiModel(value = "RoleDTO", description = "")
public class RoleDTO implements Serializable {
    public interface createRole{}
    public interface udpateRole{}

    private static final long serialVersionUID = 1L;

    /**
     * 角色主键id
     */
    @ApiModelProperty(value = "角色主键id")
    @NotNull(groups = {udpateRole.class},message = "请填写角色名称")
    private Long id;

    /**
     * 角色名称
     */
    @ApiModelProperty(value = "角色名称")
    @Size(max = 255, message = "角色名称长度不能超过255")
    @NotBlank(groups = {createRole.class,udpateRole.class},message = "请填写角色名称")
    private String name;
    /**
     * 角色code码
     */
    @ApiModelProperty(value = "角色code码")
    @Size(max = 255, message = "角色code码长度不能超过255")
    private String code;
    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    @Size(max = 255, message = "描述长度不能超过255")
    private String description;
    /**
     * 是否生效(默认1：可用 0:不可用)
     */
    @ApiModelProperty(value = "是否生效(默认1：可用 0:不可用)")
    private Integer isEnabled;
    /**
     * 是否删除(默认0：未删除 1:已删除)
     */
    @ApiModelProperty(value = "是否删除(默认0：未删除 1:已删除)")
    private Integer isDeleted;
    /**
     * 项目id（分库分表用）
     */
    @ApiModelProperty(value = "项目id（分库分表用）")
    private Long projectId;


    /**
     * 菜单id集合
     */
    @ApiModelProperty(value = "菜单id集合")
    @NotEmpty(groups = {udpateRole.class},message = "请填写菜单id集合")
    private List<Long> menuIds;
    /**
     * 组织id集合
     */
    @ApiModelProperty(value = "组织id集合")
    private List<Long> orgIds;

    /**
     * 事件id集合
     */
    @ApiModelProperty(value = "事件id集合")
    private List<Long> functionIds;

}
